/*
 * UVa 1225
 * 数数字
 */
// 把前 n（n <= 10000）个整数顺次写在一起：123456789101112...
// 数一数 0~9 各出现多少次
// 输出 10 个整数，分别是 0,1,...,9 出现的次数。
/*
样例输入：
2
3
13
样例输出：
0 1 1 1 0 0 0 0 0 0
1 6 2 2 1 1 1 1 1 1
*/

// 法一：暴力
// 遍历 1~n，一个一个地数数字 0~9 出现的次数。
// #include <iostream>
// #include <fstream>
// #include <iomanip>
// #define LOCAL
// using namespace std;
// unsigned digits[10]; // 0~9 出现的次数
// int main()
// {
// #ifdef LOCAL
//     ifstream cin("in.txt");
//     ofstream cout("out.txt");
// #endif
//     int T, n;
//     cin >> T;
//     while (T--)
//     {
//         for (int i = 0; i < 10; ++i)
//             digits[i] = 0;
//         cin >> n;
//         // 遍历 1~n，一个一个地数数字 0~9 出现的次数。
//         int tmp;
//         for (int i = 1; i <= n; ++i)
//         {
//             tmp = i;
//             do
//                 ++digits[tmp % 10];
//             while (tmp /= 10);
//         }
//         // 输出
//         // UVa 只允许多空一行，空多行或者多空一格是不行的
//         // 除非题目说明
//         for (int i = 0; i < 9; ++i)
//             cout << digits[i] << ' ';
//         cout << digits[9] << endl;
//     }
//     return 0;
// }

// 法二：找规律
// 数字 0~9 在每一个位数上出现的次数与别位上的数字有关。
// 比如 4321：
// 个位上 432 432+1   432     432    432   432 432 ..
// 十位上 430 430+10  430+2   430    430   430 430 ..
// 百位上 400 400+100 400+100 400+22 400   400 400 ..
// 千位上 0   0+1000  0+1000  0+1000 0+322 0   0   ..
// （把数字 0 视为 10 可能会更好理解）

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#define LOCAL
using namespace std;
unsigned digits[11]; // 1~10 出现的次数
int main()
{
#ifdef LOCAL
    ifstream cin("in.txt");
    ofstream cout("out2.txt");
#endif
    int T, n;
    cin >> T;
    while (T--)
    {
        cin >> n;
        for (int i = 0; i < 11; ++i)
            digits[i] = 0;
        // 计算 n 有几位数
        int bits = 0,
            tmp = n;
        do
            ++bits;
        while (tmp /= 10);
        // 按照规律，从低位到高位数数字
        for (int i = 0; i < bits; ++i)
        {
            int weigh = pow(10, i),   // 当前位数的权位
                num = n / weigh % 10, // 当前位数上的数字
                l = n / weigh / 10,   // 当前位数左边的数字
                r = n % weigh;        // 当前位数右边的数字
            for (int j = 1; j <= 10; ++j)
                digits[j] += l * weigh;
            for (int j = 1; j < num; ++j)
                digits[j] += weigh;
            if (num == 0)
            {
                // 想一想，为什么？
                digits[10] -= weigh;
                digits[10] += r + 1;
            }
            else
                digits[num] += r + 1;
        }
        // 输出
        cout << digits[10] << ' ';
        for (int i = 1; i < 9; ++i)
            cout << digits[i] << ' ';
        cout << digits[9] << endl;
    }
    return 0;
}